<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:msb="http://schemas.microsoft.com/developer/msbuild/2003" elementFormDefault="qualified" targetNamespace="http://schemas.microsoft.com/developer/msbuild/2003" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:include schemaLocation="Microsoft.Build.Commontypes.xsd" />
  <xs:element name="InstallAspNet" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Installs and register script mappings for ASP.NET</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="ApplyScriptMaps" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The method used to determine if ASP.NET script mappings should be applied</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ClientScriptsOnly" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] When , the aspnet_client scripts will be installed. No script mappings will be updated.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ExitCode" />
          <xs:attribute name="Path" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The web application that should have its script maps updated.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Recursive" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] When , script maps are applied recursively under .</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Timeout" />
          <xs:attribute name="ToolPath" type="xs:string" />
          <xs:attribute name="Version" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The version of ASP.NET to install</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="AssemblyInfo" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Generates an AssemblyInfo files</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="AssemblyCompany" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the assembly company.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AssemblyConfiguration" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the assembly configuration.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AssemblyCopyright" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the assembly copyright.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AssemblyCulture" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the assembly culture.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AssemblyDelaySign" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the assembly delay sign value.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AssemblyDescription" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the assembly description.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AssemblyFileVersion" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the assembly file version.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AssemblyInformationalVersion" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the assembly informational version.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AssemblyKeyFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the assembly key file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AssemblyKeyName" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the assembly key name.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AssemblyProduct" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the assembly product.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AssemblyTitle" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the assembly title.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AssemblyTrademark" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the assembly trademark.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AssemblyVersion" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the assembly version.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="CLSCompliant" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether [CLSCompliant].</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="CodeLanguage" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the code language.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ComVisible" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether [COMVisible].</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="GenerateClass" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether to generate the ThisAssmebly class.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Guid" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the GUID.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="OutputFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets the output file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="Attrib" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Changes the attributes of files and/or directories</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Archive" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets file's archive status.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Compressed" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating file is compressed.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Directories" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the list of directories to change attributes on.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Encrypted" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating file is encrypted.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Files" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the list of files to change attributes on.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Hidden" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating file is hidden, and thus is not included in an ordinary directory listing.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Normal" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating file is normal and has no other attributes set.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ReadOnly" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating file is read-only.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="System" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating file is a system file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="FileUpdate" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Replace text in file(s) using a Regular Expression.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Encoding" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The character encoding used to read and write the file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Files" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the files to update.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="IgnoreCase" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value specifies case-insensitive matching. .</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Multiline" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value changing the meaning of ^ and $ so they match at the beginning and end, 
            respectively, of any line, and not just the beginning and end of the entire string.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Regex" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the regex.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ReplacementCount" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the maximum number of times the replacement can occur.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ReplacementText" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the replacement text.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Singleline" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value changing the meaning of the dot (.) so it matches 
            every character (instead of every character except \n).</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="FtpUpload" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Uploads a file using File Transfer Protocol (FTP).</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="LocalFile" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the local file to upload.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Password" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the password.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="RemoteUri" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the remote URI to upload.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="UsePassive" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the behavior of a client application's data transfer process.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Username" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the username.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="FxCop" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Uses FxCop to analyse managed code assemblies and reports on
            their design best-practice compliance.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="AnalysisReportFileName" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Specifies the file name for the analysis report.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ApplyOutXsl" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Applies the XSL transformation specified in /outXsl to the 
            analysis report before saving the file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ConsoleXslFileName" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Specifies the XSL or XSLT file that contains a transformation to 
            be applied to the analysis output before it is displayed in the console.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="DependencyDirectories" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Specifies additional directories to search for assembly dependencies. 
            FxCopCmd always searches the target assembly directory and the current 
            working directory.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="DirectOutputToConsole" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Directs analysis output to the console or to the 
            Output window in Visual Studio .NET. By default, 
            the XSL file FxCopConsoleOutput.xsl is applied to the 
            output before it is displayed.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ExitCode" />
          <xs:attribute name="FailOnError" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether the build should
            fail if static code analysis reports errors. Defaults to 
            true.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ImportFiles" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Specifies the name of an analysis report or project file to import. 
            Any messages in the imported file that are marked as excluded are not 
            included in the analysis results.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="IncludeSummaryReport" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Includes a summary report with the informational 
            messages returned by FxCopCmd.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="OutputXslFileName" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Specifies the XSL or XSLT file that is referenced by the 
            xml-stylesheet processing instruction in the analysis report.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="PlatformDirectory" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Specifies the location of the version of Mscorlib.dll 
            that was used when building the target assemblies if this 
            version is not installed on the computer running FxCopCmd.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ProjectFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Specifies the filename of FxCop project file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="RuleLibraries" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Specifies the filename(s) of FxCop rule assemblies</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Rules" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The list of rules to run</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="SaveResults" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Saves the results of the analysis in the project file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="TargetAssemblies" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Specifies the target assembly to analyze.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Timeout" />
          <xs:attribute name="ToolPath" type="xs:string" />
          <xs:attribute name="TypeList" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Comma-separated list of type names to analyze.  This option disables 
            analysis of assemblies, namespaces, and resources; only the specified 
            types and their members are included in the analysis.  
            Use the wildcard character '*' at the end of the name to select multiple types.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Verbose" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether the output is verbose.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="WorkingDirectory" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the working directory.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="GacUtil" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>MSBuild task to install and uninstall asseblies into the GAC</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Assemblies" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the assembly.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Command" type="msb:GacUtilCommandsType">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the command.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ExitCode" />
          <xs:attribute name="Force" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether to force reinstall of an assembly.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Timeout" />
          <xs:attribute name="ToolPath" type="xs:string" />
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:simpleType name="GacUtilCommandsType">
    <xs:union memberTypes="msb:non_empty_string">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="Install">
            <xs:annotation>
              <xs:documentation>Install the list of assemblies into the GAC.</xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="Uninstall">
            <xs:annotation>
              <xs:documentation>Uninstall the list of assembly names from the GAC.</xs:documentation>
            </xs:annotation>
          </xs:enumeration>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:element name="GetSolutionProjects" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Task to get paths to projects and project names from VS2005 solution file</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Output" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Output list contains TaskItems of project filenames contained within the given solution.
            Metadata tag "ProjectName" contains name of project.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Solution" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Name of Solution to get Projects from</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="AppPoolController" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Allows control for an application pool on a local or remote machine with IIS installed.  The default is 
            to control the application pool on the local machine.  If connecting to a remote machine, you can
            specify the  and  for the task
            to run under.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Action" type="msb:AppPoolControllerActionsType" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the application pool action.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ApplicationPoolName" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the name of the app pool.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Password" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the password for the account the task will run under.  This property
            is needed if you specified a  for a remote machine.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ServerName" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the name of the server.  The default value is 'localhost'.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ServerPort" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the server port.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Username" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the username for the account the task will run under.  This property
            is needed if you specified a  for a remote machine.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:simpleType name="AppPoolControllerActionsType">
    <xs:union memberTypes="msb:non_empty_string">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="Start">
            <xs:annotation>
              <xs:documentation>Start the applicaiton pool</xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="Stop">
            <xs:annotation>
              <xs:documentation>Stop the applicaiton pool</xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="Restart">
            <xs:annotation>
              <xs:documentation>Restart the applicaiton pool</xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="Recycle">
            <xs:annotation>
              <xs:documentation>Recycle the applicaiton pool</xs:documentation>
            </xs:annotation>
          </xs:enumeration>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:element name="AppPoolCreate" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Creates a new application pool on a local or remote machine with IIS installed.  The default is 
            to create the new application pool on the local machine.  If connecting to a remote machine, you can
            specify the  and  for the task
            to run under.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="ApplicationPoolName" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the name of the application pool.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AppPoolAutoStart" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] The AppPoolAutoStart property indicates to the World Wide Web Publishing Service (WWW service)
            to automatically start an application pool when the application pool is created or when IIS
            is started, if the value of this property is set to true.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AppPoolIdentityType" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The AppPoolIdentityType property allows application pools to run as a specific user account:
            
            0 - The application pool runs as NT AUTHORITY\SYSTEM.
            1 - The application pool runs as NT AUTHORITY\LOCAL SERVICE.
            2 - The application pool runs as NT AUTHORITY\NETWORK SERVICE.
            3 - The application pool runs as a specific user account, defined by the  property.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AppPoolQueueLength" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The AppPoolQueueLength property indicates to the Universal Listener how many requests
            to queue up for an application pool before rejecting future requests. When the limit
            for this property is exceeded, IIS rejects the additional requests with a 503 error.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AutoShutdownAppPoolExe" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The AutoShutdownAppPoolExe property specifies an executable to run when the World Wide Web
            Publishing Service (WWW service) shuts down an application pool for rapid fail protection. You
            can use the  property to send parameters to the executable.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AutoShutdownAppPoolParams" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The AutoShutdownAppPoolParams property specifies any command-line parameters for the executable that
            is specified in the AutoShutdownAppPoolExe property. You can use these two properties in the following
            way to send e-mail, for example, when the World Wide Web Publishing Service (WWW service) shuts down
            an application pool for rapid fail protection:
            
            AutoShutdownAppPoolExe = "C:\LogAndSendMail.bat"
            AutoShutdownAppPoolParams = "-AppPoolName %1%"
            
            where %1% represents the application pool name.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="CPUAction" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The CPUAction property configures the action(s) that IIS takes when Microsoft Windows NT ® job objects
            run. Only one Windows NT job object exists per application pool, therefore the CPUAction property
            is configured on a per application pool basis.
            
            Possible values:
            0 - No action is taken except that a warning is written to the event log when the CPU limit is exceeded.
            1 - Application pool worker processes that exceed their CPU limit will be forced to shut down.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="CPULimit" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The CPULimit property configures the maximum percentage of CPU resources that worker processes
            in an application pool are allowed to consume over a period of time, as indicated by the
             property. Set this property by specifying a percentage of CPU
            usage, multiplied by 1000. For example, if you want the CPU usage limit to be 50%, set CPULimit to 50,000.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="CPUResetInterval" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The CPUResetInterval property specifies the reset period (in minutes) for CPU monitoring and
            throttling limits on the application pool. When the number of minutes elapsed since the last
            process accounting reset equals the number specified by this property, IIS will reset the CPU
            timers for both the logging and limit intervals. Setting the value of this property to 0
            disables CPU monitoring.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="DisallowOverlappingRotation" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] The DisallowOverlappingRotation property specifies whether or not the World Wide Web Publishing
            Service (WWW Service) should start up another worker process to replace the existing worker
            process while it is shutting down.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="DisallowRotationOnConfigChange" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] The DisallowRotationOnConfigChange property specifies whether or not the World Wide Web Publishing
            Service (WWW Service) should rotate worker processes in an application pool when the configuration
            has changed. This means that the worker processes will not pick up application pool changes to
            values passed to the worker process, such as  and .</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="IdleTimeout" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The IdleTimeout property specifies how long (in minutes) a worker process should run idle if no new
            requests are received and the worker process is not processing requests. After the allotted time
            passes, the worker process should request to be shut down by the World Wide Web Publishing Service (WWW Service).</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="LoadBalancerCapabilities" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The LoadBalancerCapabilities property specifies behavior when a service is unavailable. A setting of 1
            terminates the connection. A setting of 2 sends error code 503.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="LogEventOnRecycle" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The LogEventOnRecycle property specifies that IIS should log an event when an application pool is
            recycled. Application pools recycle for a variety of reasons. In order for IIS to log the event, the
            LogEventOnRecycle property must have a bit set corresponding to the reason for the recycle.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="LogonMethod" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The LogonMethod property contains an integer that specifies the logon method for cleartext 
            logons. Valid settings are:
            
            0 for interactive logon.
            1 for batch logon.
            2 for network logon.
            3 for cleartext logon.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="MaxProcesses" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The MaxProcesses property determines the maximum number of worker processes an application pool
            allows to service requests for an application pool. This property cannot be set to 0 because there
            are no unmanaged pools.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="OrphanActionExe" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The OrphanActionExe property specifies an executable to run when the World Wide Web Publishing
            Service (WWW service) orphans a worker process. You can use the  property
            to send parameters to the executable.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="OrphanActionParams" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The OrphanActionParams property specifies command-line parameters for the executable
            specified by the  property.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="OrphanWorkerProcess" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] The OrphanWorkerProcess property, when set to true, notifies the World Wide Web Publishing
            Service (WWW Service) not to terminate a worker process that fails to respond to pings, but
            to instead orphan the worker process in the application pool if the worker process suffers
            fatal errors.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Password" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the password for the account the task will run under.  This property
            is needed if you specified a  for a remote machine.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="PeriodicRestartMemory" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The PeriodicRestartMemory property specifies the amount of virtual memory (in KB) that a
            worker process can use before the worker process recycles. The maximum value supported
            for this property is 4,294,967 KB.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="PeriodicRestartPrivateMemory" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The PeriodicRestartPrivateMemory property specifies the amount of private memory (in KB) that a
            worker process can use before the worker process recycles. The maximum value supported
            for this property is 4,294,967 KB.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="PeriodicRestartRequests" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The PeriodicRestartRequests property indicates the number of requests the OOP application
            should process, after which it is recycled.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="PeriodicRestartSchedule" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The PeriodicRestartSchedule property specifies the time (in 24 hour format) that the application
            will be rotated. Each time is in local time and is specified in the following format:
            
            PeriodicRestartSchedule="hh:mm,hh:mm,hh:mm"</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="PeriodicRestartTime" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The PeriodicRestartTime property specifies the period of time, in minutes, after which IIS
            rotates an isolated OOP application. Setting the value of this property to 0 disables the
            property. The maximum supported value for this property is 71,582.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="PingingEnabled" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] The PingingEnabled property specifies whether the World Wide Web Publishing Service
            (WWW Service) should periodically monitor the health of a worker process. Setting the
            value of this property to true indicates to the WWW service to monitor the worker
            processes to ensure that the they are running and healthy.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="PingInterval" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The PingInterval property specifies the period of time (in seconds) between health-monitoring
            pings that the World Wide Web Publishing Service (WWW Service) sends to a worker process.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="PingResponseTime" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The PingResponseTime property specifies the amount of time (in seconds) that a worker process
            is given to respond to a health monitoring ping. After the time limit is exceeded, the World
            Wide Web Publishing Service (WWW Service) terminates the worker process.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="RapidFailProtection" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Setting the RapidFailProtection property to true instructs the World Wide Web Publishing
            Service (WWW service) to put all applications in an application pool out of service if the
            number of worker process crashes has reached the maximum specified by the
             property, within the number of minutes specified
            by the  property.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="RapidFailProtectionInterval" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The RapidFailProtectionInterval property specifies the number of minutes before the failure
            count for a process is reset. See .</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="RapidFailProtectionMaxCrashes" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The RapidFailProtectionMaxCrashes property specifies the maximum number of failures
            allowed within the number of minutes specified by the  
            property. See .</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ServerName" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the name of the server.  The default value is 'localhost'.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ServerPort" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the server port.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ShutdownTimeLimit" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The ShutdownTimeLimit property specifies the amount of time (in seconds) after a recycle
            threshold has been reached that IIS waits for all old requests to finish running in a worker
            process before terminating the worker process.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="SMPAffinitized" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Setting the SMPAffinitized property to true indicates that a particular worker process
            assigned to an application pool should be assigned to a given CPU. This property is used
            in conjunction with the  property to configure a
            particular processor a worker process will be assigned to.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="SMPProcessorAffinityMask" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The SMPProcessorAffinityMask property configures the hexadecimal processor mask. The hexadecimal
            processor mask indicates to which CPU the worker processes in an application pool should be
            bound. Before this property takes affect, the  property must be set
            to true for the application pool. These properties cannot be set through IIS Manager.
            
            Do not set this property to zero. Doing so causes no SMP affinity to be configured, creating an
            error condition. The default DWORD value is 4294967295 (or -1), which is represented in hexadecimal
            as 0xFFFFFFFF. A value of 0xFFFFFFFF in SMPProcessorAffinityMask indicates that all processors are enabled.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="StartupTimeLimit" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The value of the StartupTimeLimit property specifies the amount of time (in seconds) that the World Wide
            Web Publishing Service (WWW Service) should wait for a worker process to finish starting up and
            reporting to the WWW Service.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Username" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the username for the account the task will run under.  This property
            is needed if you specified a  for a remote machine.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="WAMUserName" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The WAMUserName property specifies the account user name that IIS uses by default as the COM+
            application identity for newly created IIS out-of-process applications. The values of this
            property and its companion property, , are set when IIS is installed, and
            match the user name and password values in the Microsoft Windows user account, which is established
            at the same time. Changing the value of this property is not recommended. If you do, change
            it to a valid Windows user account, and change WAMUserPass to the corresponding password
            for the new account.
            
            Important:
            Changes to WAMUserName and WAMUserPass may disrupt the operation of existing IIS out-of-process
            applications. You can synchronize application identities using Component Services to edit the
            user name and password values, found on the Identity tab of the property sheet for each package.
            
            In-process applications are not affected by these property values.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="WAMUserPass" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The WAMUserPass property specifies the password for the account that IIS uses by default as the COM+
            application identity for newly created IIS out-of-process applications. The values of this property
            and its companion property, , are set when IIS is installed, and match the
            password and user name values in the Microsoft Windows user account (IWAM_ MachineName, where MachineName
            is the name of the machine on which IIS is installed) established at the same time.
            
            Important:
            Changing the value of this property is not recommended. If you do, you must change the Windows account
            password to the identical value. You must also synchronize existing IIS out-of-process application
            identities, using Component Services to edit the user name and password values, which are found on the
            Identity tab of the property sheet for each package.
            
            In-process applications are not affected by these property values.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="AppPoolDelete" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Deletes an existing application pool on a local or remote machine with IIS installed.  The default is 
            to delete an existing application pool on the local machine.  If connecting to a remote machine, you can
            specify the  and  for the task
            to run under.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="ApplicationPoolName" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the name of the application pool.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Password" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the password for the account the task will run under.  This property
            is needed if you specified a  for a remote machine.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ServerName" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the name of the server.  The default value is 'localhost'.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ServerPort" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the server port.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Username" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the username for the account the task will run under.  This property
            is needed if you specified a  for a remote machine.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="WebDirectoryCreate" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Creates a new web directory on a local or remote machine with IIS installed.  The default is 
            to create the new web directory on the local machine.  The physical path is required to already exist
            on the target machine.  If connecting to a remote machine, you can specify the 
            and  for the task to run under.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="AccessExecute" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value that indicates if the file
            or the contents of the folder may be executed, regardless of file type.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AccessNoRemoteExecute" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] A value of true indicates that remote requests to execute applications
            are denied; only requests from the same computer as the IIS server succeed
            if the AccessExecute property is set to true. You cannot set 
            AccessNoRemoteExecute to false to enable remote requests, and set
             to false to disable local requests.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AccessNoRemoteRead" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] A value of true indicates that remote requests to view files are denied; only
            requests from the same computer as the IIS server succeed if the 
            property is set to true. You cannot set  to false to enable
            remote requests, and set  to false to disable local requests.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AccessNoRemoteScript" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] A value of true indicates that remote requests to view dynamic content are denied; only
            requests from the same computer as the IIS server succeed if the  property
            is set to true. You cannot set AccessNoRemoteScript to false to enable remote requests, 
            and set  to false to disable local requests.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AccessNoRemoteWrite" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] A value of true indicates that remote requests to create or change files are denied; only
            requests from the same computer as the IIS server succeed if the  property
            is set to true. You cannot set AccessNoRemoteWrite to false to enable remote requests, 
            and set  to false to disable local requests.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AccessRead" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] A value of true indicates that the file or the contents of the folder may be read
            through Microsoft Internet Explorer.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AccessScript" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] A value of true indicates that the file or the contents of the folder may be executed
            if they are script files or static content. A value of false only allows static files, 
            such as HTML files, to be served.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AccessSource" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] A value of true indicates that users are allowed to access source code if either
            Read or Write permissions are set. Source code includes scripts in Microsoft ® Active
            Server Pages (ASP) applications.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AccessSsl" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] A value of true indicates that file access requires SSL file permission processing, with
            or without a client certificate.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AccessSsl128" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] A value of true indicates that file access requires SSL file permission processing
            with a minimum key size of 128 bits, with or without a client certificate.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AccessSslMapCert" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] A value of true indicates that SSL file permission processing maps a client certificate
            to a Microsoft Windows ® operating system user-account. The  property
            must also be set to true for the mapping to occur.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AccessSslNegotiateCert" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] A value of true indicates that SSL file access processing requests a certificate from
            the client. A value of false indicates that access continues if the client does not have
            a certificate. Some versions of Internet Explorer will close the connection if the server
            requests a certificate and a certificate is not available (even if  
            is also set to true).</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AccessSslRequireCert" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] A value of true indicates that SSL file access processing requests a certificate from the
            client. If the client provides no certificate, the connection is closed.  
            must also be set to true when using AccessSSLRequireCert.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AccessWrite" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] A value of true indicates that users are allowed to upload files and their associated
            properties to the enabled directory on your server or to change content in a Write-enabled
            file. Write can be implemented only with a browser that supports the PUT feature of
            the HTTP 1.1 protocol standard.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AnonymousPasswordSync" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] The AnonymousPasswordSync property indicates whether IIS should handle the user password
            for anonymous users attempting to access resources.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AppAllowClientDebug" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] The AppAllowClientDebug property specifies whether ASP client-side debugging
            is enabled. This property is independent of , which
            applies to server-side debugging.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AppAllowDebugging" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] The AppAllowDebugging property specifies whether ASP debugging is enabled on
            the server. This property is independent of the  property, 
            which applies to client-side debugging.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AspAllowSessionState" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] The AspAllowSessionState property enables session state persistence for the ASP application.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AspBufferingOn" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] The AspBufferingOn property specifies whether output from an ASP application will be buffered.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AspEnableApplicationRestart" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] The AspEnableApplicationRestart determines whether an ASP application can be
            automatically restarted. When changes are made to Global.asa or metabase properties
            that affect an application, the application will not restart unless the
            AspEnableApplicationRestart property is set to true.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AspEnableAspHtmlFallback" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] The AspEnableAspHtmlFallback property controls the behavior of ASP when a
            new request is to be rejected due to a full request queue.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AspEnableChunkedEncoding" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] The AspEnableChunkedEncoding property specifies whether HTTP 1.1 chunked
            transfer encoding is enabled for the World Wide Web Publishing Service (WWW service).</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AspEnableParentPaths" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] The AspEnableParentPaths property specifies whether an ASP page allows paths
            relative to the current directory (using the ..\ notation) or above the current directory.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AspEnableTypelibCache" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] The AspEnableTypelibCache property specifies whether type libraries are cached
            on the server. The World Wide Web Publishing Service (WWW service) setting for
            this property is applicable to all in-process and pooled out-of-process application
            nodes, at all levels. Metabase settings at the Web server level or lower are ignored
            for in-process and pooled out-of-process applications. However, settings at the Web
            server level or lower are used if that node is an isolated out-of-process application.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AspErrorsToNTLog" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] The AspErrorsToNTLog property specifies which ASP errors are written to the
            Windows event log. ASP errors are written to the client browser and to the IIS
            log files by default.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AspExceptionCatchEnable" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] The AspExceptionCatchEnable property specifies whether ASP pages trap exceptions
            thrown by components.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AspLogErrorRequests" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] The AspLogErrorRequests property controls whether the Web server writes ASP errors
            to the application section of the Windows event log. ASP errors are written to the
            client browser and to the IIS log files by default.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AspScriptErrorMessage" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The AspScriptErrorMessage property specifies the error message to send to the browser
            if specific debugging errors are not sent to the client (if  
            is set to false).</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AspScriptErrorSentToBrowser" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] The AspScriptErrorSentToBrowser property specifies whether the Web server writes
            debugging specifics (file name, error, line number, description) to the client
            browser, in addition to logging them to the Windows Event Log. The  
            property provides the error message to be sent if this property is set to false.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AspTrackThreadingModel" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] The AspTrackThreadingModel property specifies whether IIS checks the threading model
            of any components (COM objects) that your application creates. The preferred setting
            of this metabase property is false.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AuthAnonymous" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Specifies Anonymous authentication as one of the possible Windows authentication
            schemes returned to clients as being available.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AuthBasic" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Specifies Basic authentication as one of the possible Windows authentication
            schemes returned to clients as being available.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AuthNtlm" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Specifies Integrated Windows authentication (also known as Challenge/Response or
            NTLM authentication) as one of the possible Windows authentication schemes
            returned to clients as being available.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AuthPersistSingleRequest" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Setting this flag to true specifies that authentication persists only for a single
            request on a connection. IIS resets the authentication at the end of each request, and
            forces re-authentication on the next request of the session.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AuthPersistSingleRequestAlwaysIfProxy" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Setting this flag to true specifies that authentication is valid for a single request if
            by proxy. IIS will reset the authentication at the end of the request and force
            re-authentication on the next request if the current authenticated request is by
            proxy of any type.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AuthPersistSingleRequestIfProxy" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Setting this flag to true specifies authentication will persist only across single
            requests on a connection if the connection is by proxy. IIS will reset the authentication
            at the end of the request if the current authenticated request is by proxy and it is
            not the special case where IIS is running MSPROXY.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="CacheControlNoCache" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] The CacheControlNoCache property specifies the HTTP 1.1 directive to prevent caching of content.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="CacheIsapi" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] The CacheISAPI property indicates whether ISAPI extensions are cached in memory after first use.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ContentIndexed" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] The ContentIndexed property specifies whether the installed content indexer should
            index content under this directory tree.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="CpuAppEnabled" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] This property specifies whether process accounting and throttling should be performed
            for ISAPI extensions and ASP applications. To perform process accounting on CGI
            applications, use the property .</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="CpuCgiEnabled" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] This property indicates whether IIS should perform process accounting for CGI
            applications. To effectively throttle CGI applications, use the CgiTimeout
            property. To use process accounting for ISAPI and ASP applications, use .</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="CreateCgiWithNewConsole" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] The CreateCGIWithNewConsole property indicates whether a CGI application runs in its own console.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="CreateProcessAsUser" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] The CreateProcessAsUser property specifies whether a CGI process is created in the system context or in the context of the requesting user.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="DefaultDoc" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The DefaultDoc contains one or more file names of default documents that will be returned
            to the client if no file name is included in the client's request. The default document
            will be returned if the  flag of the DirBrowseFlags property
            is set to true for the directory. This property can contain a list of default document
            file names separated by a comma and a space, for example Default.htm, Default.asp.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="DirBrowseShowDate" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] When set to true, date information is displayed when browsing directories.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="DirBrowseShowExtension" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] When set to true, file name extensions are displayed when browsing directories.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="DirBrowseShowLongDate" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] When set to true, date information is displayed in extended format when displaying directories.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="DirBrowseShowSize" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] When set to true, file size information is displayed when browsing directories.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="DirBrowseShowTime" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] When set to true, file time information is displayed when displaying directories.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="DontLog" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] The DontLog property specifies whether client requests are written to the IIS log files.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="EnableDefaultDoc" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] When set to true, the default document (specified by the  property) for
            a directory is loaded when the directory is browsed.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="EnableDirBrowsing" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] When set to true, directory browsing is enabled.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="EnableDocFooter" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] The EnableDocFooter property enables or disables custom footers specified by
            the DefaultDocFooter property.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="EnableReverseDns" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] The EnableReverseDns property enables or disables reverse Domain Name Server (DNS) lookups
            for the World Wide Web Publishing Service (WWW service). Reverse lookups involve looking
            up the domain name when the IP address is known. Reverse DNS lookups can use significant
            resources and time.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Password" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the password for the account the task will run under.  This property
            is needed if you specified a  for a remote machine.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ServerName" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the name of the server.  The default value is 'localhost'.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ServerPort" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the server port.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="SsiExecDisable" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] The SSIExecDisable property specifies whether server-side include (SSI) #exec directives
            are disabled under this path.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="UncAuthenticationPassthrough" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] The UNCAuthenticationPassthrough property enables user authentication passthrough
            for Universal Naming Convention (UNC) virtual root access (for authentication schemes
            that support delegation).</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Username" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the username for the account the task will run under.  This property
            is needed if you specified a  for a remote machine.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="VirtualDirectoryName" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the name of the virtual directory.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="VirtualDirectoryPhysicalPath" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the virtual directory physical path.  The physical directory must
            exist before this task executes.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="WebDirectoryDelete" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Deletes a web directory on a local or remote machine with IIS installed.  The default is 
            to delete the web directory on the local machine.  If connecting to a remote machine, you
            can specify the  and  for the
            task to run under.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Password" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the password for the account the task will run under.  This property
            is needed if you specified a  for a remote machine.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ServerName" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the name of the server.  The default value is 'localhost'.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ServerPort" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the server port.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Username" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the username for the account the task will run under.  This property
            is needed if you specified a  for a remote machine.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="VirtualDirectoryName" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the name of the virtual directory.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="WebDirectoryScriptMap" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Sets an application mapping for a filename extension on an existing web directory.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="EnableScriptEngine" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Set to true when you want the application to run in a directory without Execute permissions.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ExecutablePath" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The full path to the executable used to respond to requests for a Uri ending with</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Extension" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>The filename extension that will be mapped to an executable.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="MapToAspNet" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Indicates whether  should be mapped to the ASP.NET runtime.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Password" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the password for the account the task will run under.  This property
            is needed if you specified a  for a remote machine.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ServerName" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the name of the server.  The default value is 'localhost'.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ServerPort" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the server port.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Username" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the username for the account the task will run under.  This property
            is needed if you specified a  for a remote machine.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Verbs" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] A comma-separated list of the HTTP verbs to include in the application mapping.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="VerifyFileExists" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Set to true to instruct the Web server to verify the existence of the requested script file and to ensure that the requesting user has access permission for that script file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="VirtualDirectoryName" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the name of the virtual directory.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="WebDirectorySetting" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Reads and modifies a web directory configuration setting.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Password" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the password for the account the task will run under.  This property
            is needed if you specified a  for a remote machine.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ServerName" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the name of the server.  The default value is 'localhost'.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ServerPort" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the server port.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="SettingName" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the configuration setting to read or modify.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="SettingValue" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets the value of  on the web directory</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Username" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the username for the account the task will run under.  This property
            is needed if you specified a  for a remote machine.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="VirtualDirectoryName" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the name of the virtual directory.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="ILMerge" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>A wrapper for the ILMerge tool.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="AllowDuplicateTypes" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the names of public types
            to be renamed when they are duplicates.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AllowZeroPeKind" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the flag to treat an assembly 
            with a zero PeKind flag 
            (this is the value of the field listed as .corflags in the Manifest)
            as if it was ILonly.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AttributeFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the attribute assembly
            from whre to get all of the assembly-level attributes
            such as Culture, Version, etc.
            It will also be used to get the Win32 Resources from.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Closed" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the flag to indicate
            whether to augment the list of input assemblies
            to its "transitive closure".</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="CopyAttributes" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the flag to indicate
            whether to copy the assembly level attributes
            of each input assembly over into the target assembly.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="DebugInfo" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the flag to indicate
            whether to preserve any .pdb files
            that are found for the input assemblies
            into a .pdb file for the target assembly.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="DelaySign" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the flag to indicate
            whether the target assembly will be delay signed.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ExcludeFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the file
            that will be used to identify types
            that are not to have their visibility modified.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ExitCode" />
          <xs:attribute name="InputAssemblies" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the input assemblies to merge.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="KeyFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the .snk file
            to sign the target assembly.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="LogFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a log file
            to write log messages to.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="OutputFile" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the target assembly.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="PublicKeyTokens" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the flag to indicate
            whether external assembly references in the manifest
            of the target assembly will use public keys (false)
            or public key tokens (true).</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="TargetKind" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the indicator
            whether the target assembly is created as a library (Dll),
            a console application (Exe) or as a Windows application (WinExe).</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="TargetPlatformDirectory" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the directory in which mscorlib.dll is to be found.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="TargetPlatformVersion" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the .NET framework version for the target assembly.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Timeout" />
          <xs:attribute name="ToolPath" type="xs:string" />
          <xs:attribute name="Version" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the version number of the target assembly.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="XmlDocumentation" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the flag to indicate
            whether to merge XML documentation files
            into one for the target assembly.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="InstallAssembly" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Installs assemblies.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="AssemblyFiles" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The assemblies to process, identified by their filename.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AssemblyNames" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The assemblies to process, identified by their assembly name.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ExitCode" />
          <xs:attribute name="LogFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The file to write installation progress to.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ShowCallStack" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] If an exception occurs at any point during installation, the call
             stack will be printed to the log.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Timeout" />
          <xs:attribute name="ToolPath" type="xs:string" />
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="UninstallAssembly" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Uninstalls assemblies.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="AssemblyFiles" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The assemblies to process, identified by their filename.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="AssemblyNames" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The assemblies to process, identified by their assembly name.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ExitCode" />
          <xs:attribute name="LogFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The file to write installation progress to.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ShowCallStack" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] If an exception occurs at any point during installation, the call
             stack will be printed to the log.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Timeout" />
          <xs:attribute name="ToolPath" type="xs:string" />
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="JSCompress" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Compresses JavaScript source by removing comments and unnecessary 
            whitespace. It typically reduces the size of the script by half, 
            resulting in faster downloads and code that is harder to read.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="CompressedFiles" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the files that were successfully source-compressed.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Encoding" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Encoding to use to read and write files.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Files" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the files to source-compress.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="Mail" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Sends an email message</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Attachments" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] List of files to attach to message</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Bcc" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] List of addresss that contains the blind carbon copy (BCC) recipients for this e-mail message</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Body" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The email message body</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="CC" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] List of addresss that contains the carbon copy (CC) recipients for this e-mail message</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="From" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>The from address for this e-mail message</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="IsBodyHtml" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] A value indicating whether the mail message body is in Html</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Password" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the password.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Priority" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The priority of this e-mail message</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="SmtpServer" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>The name or IP address of the host used for SMTP transactions</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Subject" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>The subject line for this e-mail message</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="To" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>List of addresss that contains the recipients of this e-mail message</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Username" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the username.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="Add" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Add numbers</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Numbers" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the numbers to work with.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="NumericFormat" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the numeric format.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Result" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets the result.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="Divide" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Divide numbers</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Numbers" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the numbers to work with.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="NumericFormat" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the numeric format.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Result" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets the result.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="TruncateResult" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] When , uses integer division to truncate the result. Default is</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="Modulo" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Performs the modulo operation on numbers.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Numbers" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the numbers to work with.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="NumericFormat" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the numeric format.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Result" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets the result.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="Multiple" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Multiple numbers</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Numbers" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the numbers to work with.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="NumericFormat" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the numeric format.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Result" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets the result.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="Subtract" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Subtract numbers</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Numbers" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the numbers to work with.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="NumericFormat" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the numeric format.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Result" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets the result.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="Move" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Moves files on the filesystem to a new location.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="DestinationFiles" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets the list of files to moved the source files to.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="DestinationFolder" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the directory to which you want to move the files.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="MovedFiles" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the items that were successfully moved.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="SourceFiles" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the source files to move.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="NDoc" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Runs the NDoc application.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Documenter" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the documenter.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ExitCode" />
          <xs:attribute name="ProjectFilePath" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the project file path.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Timeout" />
          <xs:attribute name="ToolPath" type="xs:string" />
          <xs:attribute name="Verbose" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether the output is verbose.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="WorkingDirectory" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the working directory.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="NUnit" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Run NUnit on a group of assemblies.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Assemblies" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the assemblies.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="DisableShadowCopy" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Determines whether assemblies are copied to a shadow folder during testing.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ErrorOutputFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The file to receive test error details.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ExcludeCategory" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the categories to exclude.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ExitCode" />
          <xs:attribute name="Fixture" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the fixture.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="IncludeCategory" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the categories to include.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="OutputXmlFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the output XML file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ProjectConfiguration" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The project configuration to run.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="TestInNewThread" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Allows tests to be run in a new thread, allowing you to take advantage of ApartmentState and ThreadPriority settings in the config file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Timeout" />
          <xs:attribute name="ToolPath" type="xs:string" />
          <xs:attribute name="WorkingDirectory" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the working directory.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="XsltTransformFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the XSLT transform file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="Prompt" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Displays a message on the console and waits for user input.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Text" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The message to display in the console.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="UserInput" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] The text entered at the console.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="RegexMatch" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Task to filter an Input list with a Regex expression.
            Output list contains items from Input list that matched given expression</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Expression" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Regex expression</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Input" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Input, list of items to perform the regex on</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Options" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Regex options as strings corresponding to the RegexOptions enum:
                Compiled
                CultureInvariant
                ECMAScript 
                ExplicitCapture
                IgnoreCase
                IgnorePatternWhitespace
                Multiline
                None
                RightToLeft
                Singleline</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Output" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Results of the Regex transformation.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="RegexReplace" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Task to replace portions of strings within the Input list
            Output list contains all the elements of the Input list after
            performing the Regex Replace.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Count" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Number of matches to allow on each input item.
            -1 indicates to perform matches on all matches within input item</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Expression" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Regex expression</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Input" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Input, list of items to perform the regex on</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Options" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Regex options as strings corresponding to the RegexOptions enum:
                Compiled
                CultureInvariant
                ECMAScript 
                ExplicitCapture
                IgnoreCase
                IgnorePatternWhitespace
                Multiline
                None
                RightToLeft
                Singleline</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Output" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Results of the Regex transformation.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Replacement" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] String replacing matching expression strings in input list.
            If left empty matches in the input list are removed (replaced with empty string)</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="StartAt" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Position within the input item to start matching</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="RegistryRead" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Reads a value from the Registry</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="DefaultValue" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the default value.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="KeyName" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the full registry path of the key, beginning with a valid registry root, such as "HKEY_CURRENT_USER".</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Value" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the stored value.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ValueName" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the name of the name/value pair.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="RegistryWrite" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Writes a value to the Registry</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="KeyName" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the full registry path of the key, beginning with a valid registry root, such as "HKEY_CURRENT_USER".</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Value" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the value to be stored.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ValueName" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the name of the name/value pair.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="TaskSchema" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>A Task that generates a XSD schema of the tasks in an assembly.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Assemblies" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the list of  path to analyse.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="CreateTaskList" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating if the task list (using UsingTask)
            has to be genereted.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="IgnoreDocumentation" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating wheter documentation should be ignored
            even if available (Default is false).</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="IgnoreMsBuildSchema" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating if the 
            MsBuild schema inclusing should be ignored</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Includes" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a list of included schemas</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="OutputPath" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the output path for the generated files.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Schemas" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the list of path to the generated XSD schema.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="TaskListAssemblyFormat" type="msb:TaskListAssemblyFormatTypeType">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating how the assembly is specified in the
            UsingTask element.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="TaskLists" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the path to the task list if it was generated.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:simpleType name="TaskListAssemblyFormatTypeType">
    <xs:union memberTypes="msb:non_empty_string">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="AssemblyFileName">
            <xs:annotation>
              <xs:documentation>
            Assembly file name (Default): &lt;UsingTask AssemblyFile="foo.dll" /&gt;
            </xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="AssemblyFileFullPath">
            <xs:annotation>
              <xs:documentation>
            Assembly location: &lt;UsingTask AssemblyName="foo" /&gt;
            </xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="AssemblyName">
            <xs:annotation>
              <xs:documentation>
            Assembly Name: &lt;UsingTask AssemblyFile="bin\debug\foo.dll" /&gt;
            </xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="AssemblyFullName">
            <xs:annotation>
              <xs:documentation>
            Assembly fully qualified name: &lt;UsingTask AssemblyName="foo.dll,version ...." /&gt;
            </xs:documentation>
            </xs:annotation>
          </xs:enumeration>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:element name="Script" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Executes code contained within the task.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Code" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The code to compile and execute</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Imports" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The namespaces to import.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Language" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>The language of the script block (defaults to C#).</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="MainClass" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The name of the main class containing the static ScriptMain 
            entry point.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="References" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The required references</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ReturnValue" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] The string returned from the custom ScriptMain method.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="ServiceController" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Task that can control a Windows service.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Action" type="msb:ServiceActionsType" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the  to perform on the service.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="CanPauseAndContinue" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets a value indicating whether the service can be paused and resumed.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="CanShutdown" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets a value indicating whether the service should be notified when the system is shutting down.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="CanStop" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets a value indicating whether the service can be stopped after it has started.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="DisplayName" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets a friendly name for the service.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Exists" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets a value indicating whether the service exists.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="MachineName" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the name of the machine.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ServiceName" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the name of the service.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Status" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets the status.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Timeout" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the timeout for the command. The default is
            one minute.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:simpleType name="ServiceActionsType">
    <xs:union memberTypes="msb:non_empty_string">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="Start">
            <xs:annotation>
              <xs:documentation>
            Starts a service.
            </xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="Stop">
            <xs:annotation>
              <xs:documentation>
            Stops a service.
            </xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="Restart">
            <xs:annotation>
              <xs:documentation>
            Restarts a service.
            </xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="Pause">
            <xs:annotation>
              <xs:documentation>
            Pauses a running service.
            </xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="Continue">
            <xs:annotation>
              <xs:documentation>
            Continues a paused service.
            </xs:documentation>
            </xs:annotation>
          </xs:enumeration>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:element name="ServiceQuery" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Task that can determine the status of a specified service
            on a target server.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="CanPauseAndContinue" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets a value indicating whether the service can be paused and resumed.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="CanShutdown" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets a value indicating whether the service should be notified when the system is shutting down.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="CanStop" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets a value indicating whether the service can be stopped after it has started.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="DisplayName" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets a friendly name for the service.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Exists" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets a value indicating whether the service exists.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="MachineName" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the name of the machine.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ServiceName" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the name of the service.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Status" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets the status.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="Sleep" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>A task for sleeping for a specified period of time.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Hours" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The number of hours to add to the time to sleep.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Milliseconds" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The number of milliseconds to add to the time to sleep.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Minutes" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The number of minutes to add to the time to sleep.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Seconds" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The number of seconds to add to the time to sleep.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="VssAdd" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Task that adds files to a Visual SourceSafe database.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Comment" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The comment to be applied to the newly added file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="DatabasePath" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>The path to the folder that contains the srcsafe.ini file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Files" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>List of files that should be added to SourceSafe.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Password" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The password to use to log in to SourceSafe.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Path" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>The Visual SourceSafe project or file to perform the action
            on (starts with "$/").</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="UserName" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>The name of the user accessing the SourceSafe database.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Version" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] A version of the  to reference.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="VssCheckin" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Task that executes a checkin against a VSS Database.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Comment" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The checkin comment.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="DatabasePath" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>The path to the folder that contains the srcsafe.ini file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="LocalPath" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>The path to the local working directory.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Password" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The password to use to log in to SourceSafe.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Path" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>The Visual SourceSafe project or file to perform the action
            on (starts with "$/").</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Recursive" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Determines whether to perform the SourceSafe operation
            recursively. The default is .</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="UserName" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>The name of the user accessing the SourceSafe database.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Version" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] A version of the  to reference.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Writable" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Determines whether to leave the file(s) as writable once the
            checkin is complete. The default is .</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="VssCheckout" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Task that executes a checkout of files or projects
            against a Visual SourceSafe database.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="DatabasePath" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>The path to the folder that contains the srcsafe.ini file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="LocalPath" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>The path to the local working directory.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Password" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The password to use to log in to SourceSafe.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Path" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>The Visual SourceSafe project or file to perform the action
            on (starts with "$/").</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Recursive" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Determines whether to perform the SourceSafe operation
            recursively. The default is .</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="UserName" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>The name of the user accessing the SourceSafe database.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Version" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] A version of the  to reference.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Writable" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Determines whether files will be writable once retrieved from
            the repository. The default is .</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="VssClean" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Task that can strip the source control information from a
            Visual Studio Solution and subprojects.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType" />
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="VssDiff" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Task that records differences between the latest version
            of all the items in a Visual SourceSafe project and another version or label
            to a file.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="DatabasePath" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>The path to the folder that contains the srcsafe.ini file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Label" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>The value of the label to compare to.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="OutputFile" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>The name of the file to send the output to.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Password" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The password to use to log in to SourceSafe.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Path" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>The Visual SourceSafe project or file to perform the action
            on (starts with "$/").</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="UserName" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>The name of the user accessing the SourceSafe database.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Version" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] A version of the  to reference.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="VssGet" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Task that retireves an item or project from a Visual SourceSafe database.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="DatabasePath" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>The path to the folder that contains the srcsafe.ini file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="LocalPath" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>The path to the local working directory.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Password" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The password to use to log in to SourceSafe.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Path" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>The Visual SourceSafe project or file to perform the action
            on (starts with "$/").</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Recursive" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Determines whether to perform the SourceSafe operation
            recursively. The default is .</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Replace" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Determines whether to replace writable files.
            The default is .</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="UserName" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>The name of the user accessing the SourceSafe database.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Version" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] A version of the  to reference.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Writable" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Determines whether files will be writable once retrieved from
            the repository. The default is .</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="VssHistory" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Generates an XML file containing details of all changes made
            to a Visual SourceSafe project or file between specified labels or dates.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="DatabasePath" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>The path to the folder that contains the srcsafe.ini file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="FromDate" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The End Date for the history.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="FromLabel" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The label to compare up to.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="OutputFile" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>The name and path of the XML output file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Password" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The password to use to log in to SourceSafe.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Path" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>The Visual SourceSafe project or file to perform the action
            on (starts with "$/").</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Recursive" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Determines whether to perform the SourceSafe operation
            recursively. The default is .</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ToDate" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The Start Date for the history.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ToLabel" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The label to start comparing to.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="User" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The name of the user whose changes should be listed in 
            the history.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="UserName" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>The name of the user accessing the SourceSafe database.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Version" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] A version of the  to reference.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="VssLabel" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Task that applies a label to a Visual SourceSafe item.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Comment" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] An optional comment.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="DatabasePath" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>The path to the folder that contains the srcsafe.ini file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Label" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>The text of the label.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Password" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The password to use to log in to SourceSafe.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Path" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>The Visual SourceSafe project or file to perform the action
            on (starts with "$/").</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Recursive" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Determines whether to perform the SourceSafe operation
            recursively. The default is .</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="UserName" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>The name of the user accessing the SourceSafe database.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Version" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] A version of the  to reference.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="VssUndoCheckout" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Task that undoes a checkout of files or projects
            against a Visual SourceSafe database.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="DatabasePath" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>The path to the folder that contains the srcsafe.ini file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="LocalPath" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>The path to the local working directory.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Password" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The password to use to log in to SourceSafe.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Path" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>The Visual SourceSafe project or file to perform the action
            on (starts with "$/").</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Recursive" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Determines whether to perform the SourceSafe operation
            recursively. The default is .</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="UserName" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>The name of the user accessing the SourceSafe database.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Version" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] A version of the  to reference.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="SqlExecute" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Executes a SQL command.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Command" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>The command to execute</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ConnectionString" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>The connection string</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Result" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Output the return count/value</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="ExecuteDDL" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>MSBuild task to execute DDL and SQL statements.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="BatchSeparator" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the batch delimter string.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ConnectionString" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>The connection string</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Files" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the DDL/SQL files.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Results" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Output the return count/values</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="SvnCheckout" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Checkout a local working copy of a Subversion repository.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Arguments" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the arguments.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Command" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the command.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ExitCode" />
          <xs:attribute name="Force" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the force.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="LocalPath" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the local path.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Message" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the message.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Password" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the password.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="RepositoryPath" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets the repository path.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Revision" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets the revision.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Targets" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the targets.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Timeout" />
          <xs:attribute name="ToolPath" type="xs:string" />
          <xs:attribute name="Username" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the username.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Verbose" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the verbose.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="SvnClient" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Subversion client base class</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Arguments" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the arguments.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Command" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the command.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ExitCode" />
          <xs:attribute name="Force" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the force.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="LocalPath" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the local path.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Message" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the message.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Password" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the password.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="RepositoryPath" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets the repository path.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Revision" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets the revision.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Targets" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the targets.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Timeout" />
          <xs:attribute name="ToolPath" type="xs:string" />
          <xs:attribute name="Username" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the username.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Verbose" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the verbose.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="SvnCommit" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Subversion Commit command</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Arguments" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the arguments.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Command" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the command.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ExitCode" />
          <xs:attribute name="Force" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the force.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="LocalPath" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the local path.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Message" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the message.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Password" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the password.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="RepositoryPath" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets the repository path.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Revision" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets the revision.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Targets" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the targets.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Timeout" />
          <xs:attribute name="ToolPath" type="xs:string" />
          <xs:attribute name="Username" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the username.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Verbose" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the verbose.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="SvnCopy" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Copy a file or folder in Subversion</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Arguments" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the arguments.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Command" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the command.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="DestinationPath" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The path to which the SourcePath should be copied</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ExitCode" />
          <xs:attribute name="Force" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the force.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="LocalPath" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the local path.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Message" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the message.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Password" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the password.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="RepositoryPath" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets the repository path.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Revision" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets the revision.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="SourcePath" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The path of the source file or folder that should be copied</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Targets" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the targets.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Timeout" />
          <xs:attribute name="ToolPath" type="xs:string" />
          <xs:attribute name="Username" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the username.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Verbose" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the verbose.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="SvnExport" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Export a folder from a Subversion repository</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Arguments" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the arguments.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Command" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the command.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ExitCode" />
          <xs:attribute name="Force" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the force.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="LocalPath" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the local path.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Message" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the message.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Password" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the password.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="RepositoryPath" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets the repository path.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Revision" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets the revision.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Targets" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the targets.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Timeout" />
          <xs:attribute name="ToolPath" type="xs:string" />
          <xs:attribute name="Username" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the username.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Verbose" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the verbose.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="SvnInfo" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Run the "svn info" command and parse the output</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Arguments" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the arguments.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Command" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the command.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ExitCode" />
          <xs:attribute name="Force" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the force.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="LastChangedAuthor" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] The author who last changed this node.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="LastChangedDate" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] The date this node was last changed.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="LastChangedRevision" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] The last changed revision number.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="LocalPath" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the local path.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Message" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the message.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="NodeKind" type="msb:NodeKindType">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] The Subversion node kind.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Password" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the password.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="RepositoryPath" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets the repository path.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="RepositoryRoot" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Return the repository root or null if not set by Subversion.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="RepositoryUuid" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Return the repository UUID value from Subversion.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Revision" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets the revision.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Schedule" type="msb:ScheduleType">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] The Subversion schedule type.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Targets" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the targets.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Timeout" />
          <xs:attribute name="ToolPath" type="xs:string" />
          <xs:attribute name="Username" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the username.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Verbose" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the verbose.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:simpleType name="NodeKindType">
    <xs:union memberTypes="msb:non_empty_string">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="file">
            <xs:annotation>
              <xs:documentation>
            Node is a file
            </xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="dir">
            <xs:annotation>
              <xs:documentation>
            Node is a directory
            </xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="unknown">
            <xs:annotation>
              <xs:documentation>
            Unknown node type
            </xs:documentation>
            </xs:annotation>
          </xs:enumeration>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:simpleType name="ScheduleType">
    <xs:union memberTypes="msb:non_empty_string">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="normal">
            <xs:annotation>
              <xs:documentation>
            Normal schedule
            </xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="unknown">
            <xs:annotation>
              <xs:documentation>
            Unknown schedule.
            </xs:documentation>
            </xs:annotation>
          </xs:enumeration>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:element name="SvnUpdate" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Subversion Update command</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Arguments" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the arguments.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Command" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the command.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ExitCode" />
          <xs:attribute name="Force" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the force.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="LocalPath" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the local path.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Message" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the message.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Password" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the password.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="RepositoryPath" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets the repository path.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Revision" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets the revision.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Targets" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the targets.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Timeout" />
          <xs:attribute name="ToolPath" type="xs:string" />
          <xs:attribute name="Username" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the username.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Verbose" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the verbose.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="SvnVersion" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Summarize the local revision(s) of a working copy.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="ExitCode" />
          <xs:attribute name="Exported" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] True if invoked on a directory that is not a working copy, 
            svnversion assumes it is an exported working copy and prints "exported".</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="HighRevision" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] High revision number of the local working repository revision range.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="LocalPath" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Path to local working copy.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="LowRevision" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Low revision number of the local working repository revision range.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Modifications" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] True if working copy contains modifications.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Revision" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Revision number of the local working repository.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Switched" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] True if working copy is switched.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Timeout" />
          <xs:attribute name="ToolPath" type="xs:string" />
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="TemplateFile" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>MSBuild task that replaces tokens in a template file and writes out a new file.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="OutputFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] The token replaced template file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="OutputFilename" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The full path to the output file name.  If no filename is specified (the default) the
            output file will be the Template filename with a .out extension.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Template" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>The template file used.  Tokens with values of ${Name} are replaced by name.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Tokens" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] List of tokens to replace in the template.  Token name is taken from the TaskItem.ItemSpec and the
            replacement value comes from the ReplacementValue metadata of the item.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="TfsVersion" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Determines the changeset in a local Team Foundation Server workspace</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Changeset" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] The latest changeset ID in the local path</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Domain" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The domain of the user to authenticate on the server</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="LocalPath" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Path to local working copy.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Password" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The password for the user to authenticate on the server</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="TfsLibraryLocation" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The location of the Team Foundation Server client assemblies. Leave empty when the client is installed in the Global Assembly Cache.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Username" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The user to authenticate on the server</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="Time" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Gets the current date and time.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="DateTimeValue" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets the internal time value.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Day" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the day of the month represented by this instance.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="DayOfWeek" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the day of the week represented by this instance.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="DayOfYear" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the day of the year represented by this instance.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Format" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the format string
            for output parameter .</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="FormattedTime" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the value of this instance to its equivalent string representation.
            If input parameter  is provided,
            the value is formatted according to it.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Hour" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the hour component of the date represented by this instance.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Kind" type="msb:DateTimeKindType">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets a value that indicates whether the time represented by this instance is based
            on local time, Coordinated Universal Time (UTC), or neither.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="LongDate" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the value of this instance to its equivalent long date string representation.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="LongTime" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the value of this instance to its equivalent long time string representation.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Millisecond" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the milliseconds component of the date represented by this instance.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Minute" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the minute component of the date represented by this instance.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Month" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the month component of the date represented by this instance.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Second" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the seconds component of the date represented by this instance.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ShortDate" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the value of this instance to its equivalent short date string representation.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ShortTime" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the value of this instance to its equivalent short time string representation.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Ticks" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the number of ticks that represent the date and time of this instance.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="TimeOfDay" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the time of day for this instance.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Year" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the year component of the date represented by this instance.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:simpleType name="DateTimeKindType">
    <xs:union memberTypes="msb:non_empty_string">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="Unspecified">
            <xs:annotation>
              <xs:documentation>The time represented is not specified as either local time or Coordinated Universal Time (UTC).1</xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="Utc">
            <xs:annotation>
              <xs:documentation>The time represented is UTC.1</xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="Local">
            <xs:annotation>
              <xs:documentation>The time represented is local time.1</xs:documentation>
            </xs:annotation>
          </xs:enumeration>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:element name="Unzip" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Unzip a file to a target directory.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="TargetDirectory" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the target directory.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ZipFileName" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the name of the zip file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="Version" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Generates version information based on various algorithms</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Build" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets the build version number.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="BuildType" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the method used to generate a  number</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Major" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets the major version number.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Minor" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets the minor version number.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Revision" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets or sets the revision version number.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="RevisionType" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the method used to generate a  number</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="StartDate" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the starting date used to calculate the  number when  is Automatic.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="VersionFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the file used to initialize and persist the version.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="WebDownload" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Downloads a resource with the specified URI to a local file.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="FileName" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the name of the local file that is to receive the data.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="FileUri" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the URI from which to download data.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="XmlMassUpdate" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Performs multiple updates on an XML file</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="ContentFile" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>The original file whose content is to be updated</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ContentPathUsedByTask" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] The full path of the file containing content updated by the task</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ContentRoot" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The XPath expression identifying root node that substitions are relative to</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="MergedFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The file created after performing the updates</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="MergedPathUsedByTask" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] The full path of the file containing the results of the task</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="NamespaceDefinitions" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] A collection of prefix=namespace definitions used to query the XML documents</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="SubstitutionsFile" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The file containing the list of updates to perform</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="SubstitutionsPathUsedByTask" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] The full path of the file containing substitutions used by the task</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="SubstitutionsRoot" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The XPath expression used to locate the list of substitutions to perform</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="UpdateControlNamespace" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The namespace used for XmlMassUpdate pre-defined attributes</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="XmlQuery" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Reads a value or values from lines of XML</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Lines" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The lines of a valid XML document</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="NamespaceDefinitions" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] A collection of prefix=namespace definitions used to query the XML document</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ReservedMetaDataPrefix" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] The string that is prepended to all reserved metadata properties.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Values" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] The values selected by</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ValuesCount" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] The number of values returned in</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="XmlFileName" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the name of an XML file to query</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="XPath" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>The query used to identify the values in the XML document</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="XmlRead" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Reads a value from a XML document using a XPath.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Namespace" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the default namespace.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Prefix" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the prefix to associate with the namespace being added.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Value" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] [Output] Gets the value read from file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="XmlFileName" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the name of the XML file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="XPath" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the XPath.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="XmlUpdate" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Updates a XML document using a XPath.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Namespace" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the default namespace.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Prefix" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the prefix to associate with the namespace being added.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Value" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the value to write.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="XmlFileName" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the name of the XML file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="XPath" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the XPath.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="Xslt" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>A task to merge and transform a set of xml files.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Inputs" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the xml input files.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Output" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the path of the output file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="RootAttributes" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the list of
            semicolon-delimited name/value pairs
            of the .
            For example: RootAttributes="foo=bar;date=$(buildDate)"</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="RootTag" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the xml tag name
            of the root tag wrapped
            around the merged xml input files.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Xsl" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the path of the
            xsl transformation file to apply.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="Zip" substitutionGroup="msb:Task">
    <xs:annotation>
      <xs:documentation>Create a zip file with the files specified.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="msb:TaskType">
          <xs:attribute name="Comment" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the comment.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Files" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the files to zip.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="Flatten" type="msb:non_empty_string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets a value indicating whether this  is flatten.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="WorkingDirectory" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the working directory for the zip file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ZipFileName" type="msb:non_empty_string" use="required">
            <xs:annotation>
              <xs:documentation>Gets or sets the name of the zip file.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="ZipLevel" type="xs:string">
            <xs:annotation>
              <xs:documentation>[Optional] Gets or sets the zip level.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
</xs:schema>